
<!DOCTYPE html> 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

	<link rel="stylesheet" href="https://blog.photopea.com/wp-content/themes/simplex/style.css" type="text/css" media="screen" />
	<link rel='stylesheet' id='casper-google-fonts-css'  href='https://fonts.googleapis.com/css?family=Noto+Serif%3A400%2C700%2C400italic%7COpen+Sans%3A700%2C400&amp;ver=4.0.1' type='text/css' media='all' />
	
	<title>Photopea API</title>
	
			
	</head>

	<body>
<div id="page">
	<div id="header"> 
		<a href="../index.html" class="title">Photopea API</a> 
		<!--<p>Web-based image editor.</p>-->
		<a href="https://blog.photopea.com">Blog</a> |
		<a href="../learn/index.html">Learn</a> |
		<a href="../tuts/index.html">Tutorials</a> |
		<a class="curr" href="index.html">API</a> |
		<a href="https://www.facebook.com/photopea">Facebook</a> |
		<a href="https://www.twitter.com/photopeacom">Twitter</a> 
	</div>
	
	<div id="main" style="max-width:960px;">
		<div id="sidebar" style="width:20%;">
			<!--<h3>Topics</h3>-->
			<ul>
						<li class="lvl0"><a href="index.html">API Spec</a></li>
			<li class="lvl1"><a href="environment.html">Environment</a></li>
			<li class="lvl1"><a href="live.html">Live Messaging</a></li>
			<li class="lvl1 active"><a href="plugins.html">Plugins</a></li>
			<li class="lvl0"><a href="playground.html">Playground</a></li>
			<li class="lvl0"><a href="demo.html">Demo</a></li>
			<li class="lvl0"><a href="accounts.html">Accounts</a></li>
			</ul>
		</div>
		<div id="content" style="width:80%;">

			<div class="post">
							
			
			<h1>Plugins</h1>
			<p>Create Plugins for Photopea and provide them to your users through a configuration JSON.</p>
			<pre>{ "environment": {
	"plugins" : [ 
		{
			"name"  : "Wikipedia",
			"url"   : "https://en.wikipedia.org",
			"width" : 400,
			"height": 300,
			"icon"  : "https://en.wikipedia.org/static/favicon/wikipedia.ico"
		}
	]
} }</pre>
			<ul>
				<li><code>name</code> - plugin name</li>
				<li><code>url</code> - plugin URL</li>
				<li><code>width</code> - panel width</li>
				<li><code>height</code> - panel height</li>
				<li><code>icon</code> - plugin icon (optional)</li>
			</ul>
			<p>For each plugin, the button will be added to the right side, below the current buttons.</p>		
			<img src="https://i.imgur.com/8tPgmho.png" class="fullw" />
			<p>After the user clicks the plugin button, the panel is opened with a website <code>url</code>, having the size of <code>width</code> and <code>height</code>.</p>
			
			<p>Users can drag-and-drop images from your website to Photopea (as Photopea supports dropping images from any website, opened by a browser).</p>
			
			<p>Your website can connect with Photopea using <a href="live.html">Live Messaging</a> (your website acts as the OE). 
			It allows your plugin to execute scripts (e.g. to change foreground color, to move a layer, etc.).</p>
			
			<p>The plugin can give files to Photopea (images: psd, jpg, svg ... or resources: brushes, patterns, fonts ...), 
			or request the current file in a specific format.
			All this can be controlled e.g. by buttons in your plugin (website).</p>
			
			<pre>window.parent.postMessage("...script...", "*");
window.parent.postMessage(ArrayBuffer, "*");</pre>
			
			<h2>Examples of usage</h2>
			
			<p><b>Photo Store</b>. Let users browse your database of images. They can search the database by a keyword. 
			You can add a button "Open" next to each image, which would open that image in Photopea.</p>
			
			<p><b>Font Gallery</b>. Let users browse your database of fonts. The font will be loaded after clicking the button. 
			You can integrate a payment gateway into the plugin, too (as it is your website, you have full control over it).</p>
			
			<p>You can make your plugin "commercial" - let users pay for them monthly. The sign-in and the payment interface could still be 
			in the same "iframe" of your plugin, inside Photopea (or you could open a new window and then, come back to Photopea).</p>			</div>
		</div>
	</div>
		
	<div id="disqus_thread"></div>
	<script>

	/**
	*  RECOMMENDED CONFIGURATION VARIABLES: EDIT AND UNCOMMENT THE SECTION BELOW TO INSERT DYNAMIC VALUES FROM YOUR PLATFORM OR CMS.
	*  LEARN WHY DEFINING THESE VARIABLES IS IMPORTANT: https://disqus.com/admin/universalcode/#configuration-variables*/
	/*
	var disqus_config = function () {
	this.page.url = PAGE_URL;  // Replace PAGE_URL with your page's canonical URL variable
	this.page.identifier = PAGE_IDENTIFIER; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
	};
	*/
	(function() { // DON'T EDIT BELOW THIS LINE
	var d = document, s = d.createElement('script');
	s.src = '//photopeablog.disqus.com/embed.js';
	s.setAttribute('data-timestamp', +new Date());
	(d.head || d.body).appendChild(s);
	})();
	</script>
	 
</div>
	
</html>
